03 HTTP overview
Internet world
互联网的正式名称是 Internet,实际上访问的只是互联网的一个子集万维网(World Wide Web),它基于 HTTP 协议,传输 HTML 等超文本资源,能力被限制在 HTTP 协议之内。
除了万维网,还有电子邮件、BT 和 Magnet 点对点下载、FTP 文件下载、SSH 安全登录、各种即时通信服务等,它们需要用各自的专有协议来访问。
Web Browser
检索、查看互联网上网页资源的应用程序,Web指的是 World Wide Web,也就是万维网。
浏览器本质上是一个 HTTP 协议中的请求方,使用 HTTP 协议获取网络上的各种资源。HTML 排版引擎用来展示页面,JavaScript 引擎用来实现动态化效果,开发者工具用来调试网页,以及五花八门的各种插件和扩展。
在 HTTP 协议里,浏览器的角色被称为 User Agent,意思是作为访问者的代理来发起 HTTP 请求。
Web Server
在协议另一端的应答方(响应方)是服务器 Web Server。
Web 服务器是 HTTP 协议里响应请求的主体。
- 硬件是物理形式或云形式的机器;
- 软件是提供 Web 服务的应用程序,通常会运行在硬件服务器上。
服务器软件:
- Apache:功能相当完 善,资料很多,学习门槛低;
- Nginx: 高性能、高稳定,易于扩展;
- Windows 上的 IIS;
- Java 的 Jetty/Tomcat ;
CDN
CDN,Content Delivery Network 内容分发网络,它应用了 HTTP 协议里的缓存和代理技术,代替源站响应客户端的请求。
提供的功能:
- 网络加速:可以缓存源站的数据,让浏览器的请求不用到达源站服务器,直接在半路就可以获取响应。如果 CDN 的调度算法很优秀,更可以找到离用户最近的节点,大幅度缩短响应时间。
- 负载均衡
- 安全防护
- 边缘计算
- 跨运营商网络
爬虫
可以自动访问 Web 资源的应用程序。
robots.txt 约定可以爬取的信息范围。
HTML
是 HTTP 协议传输的主要内容之一,它描述了超文本页面,用各种“标签”定义文字、图片等资源和排版布局,最终由浏览器“渲染”出可视化页面。
Web Service
是一个基于 Web(HTTP)的服务架构技术,由 W3C 定义的应用服务开发规范,使用 client-server 主从架构,通常使用 WSDL 定义服务接口,使用 HTTP 协议传输 XML 或 SOAP 消息。
WAF
网络应用防火墙,检测 HTTP 流量,防护 Web 应用的安全技术。通常位于 Web 服务器之前,可以阻止 SQL 注入、跨站脚本等攻击等。
TCP/IP
TCP/IP 协议是一系列网络通信协议的统称,最核心的两个协议是 TCP 和 IP,其他的还有 UDP、ICMP、ARP 等等,共同构成了一个复杂但有层次的协议栈。
IP 协议 Internet Protocol,主要解决寻址和路由问题,以及如何在两点间传送数据包。
TCP 协议 Transmission Control Protocol,位于 IP 协议之上,基于 IP 协议提供可靠的、字节流形式的通信,是 HTTP 协议得以实现的基础。
DNS
域名系统 Domain Name System,用有意义的名字来作为 IP 地址的等价替代。
URI/URL
URI(Uniform Resource Identifier)统一资源标识符,使用它唯一地标记互联网上资源。
URL(Uniform Resource Locator)统一资源定位符,俗称网址,是 URI 的一个子集。
http://nginx.org/en/download.html
协议名:访问该资源应当使用的协议,http
;
主机名:即互联网上主机的标记,可以是域名或 IP 地址,nginx.org
;
路径:即资源在主机上的位置,使用“/”分隔多级目录,/en/download.html
。
HTTPS
SSL/TLS 负责加密通信的安全协议,建立在 TCP/IP 之上,被用作 HTTP 的下层。
代理
代理(Proxy)是 HTTP 协议中请求方和应答方中间的一个环节,既可以转发客户端的请求,也可以转发服务器的应答。
- 匿名代理:完全隐匿了被代理的机器,外界看到的只是代理服务器;
- 透明代理:在传输过程中是透明开放的,外界既知道代理,也知道客户端;
- 正向代理:靠近客户端,代表客户端向服务器发送请求;
- 反向代理:靠近服务器端,代表服务器响应客户端的请求;
通过代理实现的功能:
- 负载均衡:把访问请求均匀分散到多台机器,实现访问集群化;
- 内容缓存:暂存上下行的数据,减轻后端的压力;
- 安全防护:隐匿 IP, 使用 WAF 等工具抵御网络攻击,保护被代理的机器;
- 数据处理:提供压缩、加密等额外的功能。